#include "wxsfiledialog.h"
#include "../wxsitemresdata.h"
#include <wx/filedlg.h>

namespace {
  wxsRegisterItem<wxsFileDialog> Reg( _T( "FileDialog" ), _T( "文件对话框" ), wxsTTool, _T( "对话框" ), 180, false );
  WXS_ST_BEGIN( wxsFileDialogStyles, _T( "wxFD_DEFAULT_STYLE" ) )
  WXS_ST_CATEGORY( "wxFileDialog" )
  WXS_ST( wxFD_DEFAULT_STYLE )
  WXS_ST( wxFD_OPEN )
  WXS_ST( wxFD_SAVE )
  WXS_ST( wxFD_OVERWRITE_PROMPT )
  WXS_ST( wxFD_FILE_MUST_EXIST )
  WXS_ST( wxFD_MULTIPLE )
  WXS_ST( wxFD_CHANGE_DIR )
  WXS_ST( wxFD_PREVIEW )
  WXS_ST_DEFAULTS()
  WXS_ST_END()
}

wxsFileDialog::wxsFileDialog( wxsItemResData* Data ):
  wxsTool( Data, &Reg.Info, 0, wxsFileDialogStyles ) {
  m_Message = _T( "选择文件" );
}

void wxsFileDialog::OnBuildCreatingCode() {
  switch( GetLanguage() ) {
    case wxsCPP: {
      AddHeader( _T( "<wx/filedlg.h>" ), GetInfo().ClassName, hfInPCH );
      if( m_Wildcard.empty() ) {
        Codef( _T( "%C(%W, %t, %t, %t, wxFileSelectorDefaultWildcardStr, %T, %P, %S, %N);\n" ),
               m_Message.wx_str(),
               m_DefaultDir.wx_str(),
               m_DefaultFile.wx_str() );
      } else {
        Codef( _T( "%C(%W, %t, %t, %t, %t, %T, %P, %S, %N);\n" ),
               m_Message.wx_str(),
               m_DefaultDir.wx_str(),
               m_DefaultFile.wx_str(),
               m_Wildcard.wx_str() );
      }
      BuildSetupWindowCode();
      return;
    }
    case wxsUnknownLanguage:
    default: {
      wxsCodeMarks::Unknown( _T( "wxsFileDialog::OnBuildCreatingCode" ), GetLanguage() );
    }
  }
}

void wxsFileDialog::OnEnumToolProperties( M_Code_unused long Flags ) {
  WXS_SHORT_STRING( wxsFileDialog, m_Message, _T( "Message" ), _T( "message" ), _T( "" ), false );
  WXS_SHORT_STRING( wxsFileDialog, m_DefaultDir, _T( "Default directory" ), _T( "default_dir" ), _T( "" ), false );
  WXS_SHORT_STRING( wxsFileDialog, m_DefaultFile, _T( "Default file" ), _T( "default_file" ), _T( "" ), false );
  WXS_SHORT_STRING( wxsFileDialog, m_Wildcard, _T( "Wildcard" ), _T( "wildcard" ), _T( "" ), false );
}
